Express Middleware
✒️ 2025-05-26 14:08 내용 수정
Node.js 교과서 개정 3판 내용 정리
Middleware
컴포넌트와 입출력 간의 통신을 담당하는 소프트웨어
- 참고 자료 : mdn web docs middleware
- express 프레임워크에서 사용하는 미들웨어는 요청과 응답의 중간에서 기능을 추가하거나 나쁜 요청을 걸러내는 역할을 수행한다.
app.use(middelWare); // 모든 요청에서 미들웨어 실행
app.use('/name', middelWare); // 이름이 name으로 시작하는 요청에서 미들웨어 실행
app.post('/name', middelWare); // 이름이 name으로 시작하는 post 요청에서 미들웨어 실행
app.use((err, req, res, next)=>{
// err : error, 에러에 관한 정보 포함
// req : request, 요청에 관한 정보 포함
// res : response, 응답에 관한 정보 포함
// next : 다음 미들웨어로 넘어가는 함수
})
static
- 정적인 파일(css, image, js 등)들을 제공하는 라우터 역할을 한다.
- Nodejs 환경 설정#3. 파일 연결에서 상세 내용 참고.
- 기본으로 제공되어 express 객체 안에서 꺼내서 사용한다.
__dirname은 현재 경로명을 의미하며,__filename은 현재 파일명을 의미한다.
app.use('요청경로', express.static('실제경로'));
app.use(express.static(__dirname + '/public'));
body-parser
- 요청의 본문에 있는 데이터를 해석해서 req.body 객체로 만들어주며, form 데이터나 ajax 요청의 데이터를 처리한다.
- multipart(이미지, 동영상, 파일) 데이터는 처리하지 못해 이는 multer 모듈로 처리해야 한다.
- express 4.17.0 버전부터 body-parser가 express에 내장되어 있어 express 객체 안에서 꺼내 사용한다.
app.use(express.json()); // json형태로 데이터 처리
app.use(express.urlencoded({extended : true})); // queryString 방식의 데이터 처리
app.use(express.raw()); // buffer 요청 데이터 처리
app.use(express.text()); // text 요청 데이터 처리
Router
- 라우터를 분리하여 관리할 수 있는 기능을 제공한다.
- routes 폴더를 생성해 그 안에 라우팅을 위한 js 파일들을 추가한다.
- Router를 사용하려면 express 안에 있는 Router()를 사용해야 한다.
/path/:id와 같이 파라미터를 주고 받는 경우엔 해당 라우터가 다양한 라우터를 아우르는 와일드카드 역할을 하기 때문에 일반 라우터의 뒤에 위치해야 한다.
const router = require('express').Router();
router.get('/', (req, res)=>{
res.send('라우터 테스트');
});
router.post('/post', (req, res)=>{
res.send('라우터 테스트');
});
module.exports = router;
- server.js에서 라우터를 불러온다.
app.use('/', require('./routes/route.js'));